// 导入 express 模块
const express = require('express');
// 创建 express 的服务器实例
const app = express();

const expressJwt = require('express-jwt');
const { jwtSecretKey } = require('./config.js');

// const joi = require('@hapi/joi');

// 导入 cors 中间件
const cors = require('cors');
const { JsonWebTokenError } = require('jsonwebtoken');
const { UnauthorizedError } = require('express-jwt');
// 将 cors 注册为全局中间件
app.use(cors());

// 挂载全局中间件，添加res.cc方法
app.use((req, res, next) => {
  res.cc = (err, status = 1, data) => {
    res.send({
      status,
      message: err instanceof Error ? err.message : err,
      data,
    });
  };
  next();
});

app.use('/my', expressJwt({ secret: jwtSecretKey }));

// 导入并注册用户路由模块
app.use('/api', require('./router/user'));

app.use((err, req, res, next) => {
  // if (err instanceof joi.ValidationError ) {
  //   return res.cc(err)
  // }
  if (err instanceof UnauthorizedError) {
    return res.send({
      status: 1,
      message: 'TOKEN无效',
    });
  }

  res.cc(err);
});

// 调用 app.listen 方法，指定端口号并启动web服务器
app.listen(3007, function () {
  console.log('api server running at http://127.0.0.1:3007');
});
